package com.common.account.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.common.account.entity.AuPermission;
import com.common.basis.oauth.AuUser;

import java.util.List;

/**
 * 服务类
 *
 * @author wangguochao
 * @since 2020-01-06
 */
public interface IAuPermissionService extends IService<AuPermission> {


    /**
     * 发现树
     * 权限树
     *
     * @param userName 用户名
     * @return 权限
     */
    List<AuPermission> findTree(String userName);

    /**
     * 找到树的用户名
     * 用户菜单
     *
     * @param userName 账号
     * @param scope    范围
     * @param type     类型
     * @return 权限
     */
    List<AuPermission> findTreeByUserName(String userName, String scope, String type);

    /**
     * 找到的用户名
     * 用户权限
     *
     * @param userName 账号
     * @return 权限
     */
    List<AuPermission> findByUserName(String userName);

    /**
     * 找到的用户id
     * 根据用户查询权限
     *
     * @param userId 用户id
     * @return {@link List}<{@link String}>
     */
    List<String> findByUserId(String userId);

    /**
     * 找到用户的权限
     * 根据权限查询用户
     *
     * @param permission 许可
     * @return {@link List}<{@link AuUser}>
     */
    List<AuUser> findUserByPermission(String permission);


    /**
     * 获取用户权限按照类型
     *
     * @param name 用户ID
     * @param type 类型
     */
    List<String> findByUserNameAndType(String name, String type);

    /**
     * 获取最大排序数量根据父id
     *
     * @param parentId 父id
     * @return {@code Integer}
     */
    Integer getMaxSortNumberByParentId(String parentId);
}
